package cn.stacey.day04.oop;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;

public class DemoJavaFx extends Application {
	int i = 1;
	@Override
	public void start(Stage primaryStage) throws Exception {
		// 布局
		Label label = new Label("每天进步多少：");
		TextField textField = new TextField();
		
		Label result = new Label();

		Button button = new Button("计算功力：");			// 创建控件
//		button.setOnAction(new ButtonHandler(textField, result));
		
		button.setOnAction(new EventHandler<ActionEvent>() {
			@Override
			public void handle(ActionEvent event) {
				System.out.println(i);
				
				String text = textField.getText();	// 取到用户输入值
				double progress = Double.parseDouble(text);	
				double total = Math.pow(1 + progress, 365);	// 计算结果
				
				label.setText("" + total);		// 显示结果	
			}
		});
		
		// 使用lambda表达式简化
		button.setOnAction((event) -> {
			String text = textField.getText();	// 取到用户输入值
			double progress = Double.parseDouble(text);	
			double total = Math.pow(1 + progress, 365);	// 计算结果
			
			label.setText("" + total);		// 显示结果	
		});
		
		
		HBox container = new HBox(10);
		container.setAlignment(Pos.CENTER);
		container.getChildren().addAll(label, textField, button, result);
		
		// 场景
		Scene scene = new Scene(container, 800, 300);		// 创建场景、把控件加入到场景
		
		// stage: 舞台									// 把场景加入到舞台
		primaryStage.setScene(scene);
		primaryStage.show();
	}

	public static void main(String[] args) {
		launch(args);
	}
}

// 一个文件里面可以定义多个类，但是只能有一个是public的
class ButtonHandler implements EventHandler<ActionEvent> {
	TextField tf;
	Label label;
	public ButtonHandler(TextField tf, Label label) {
		this.tf = tf;
		this.label = label;
	}

	@Override
	public void handle(ActionEvent event) {
		String text = tf.getText();	// 取到用户输入值
		double progress = Double.parseDouble(text);	
		double total = Math.pow(1 + progress, 365);	// 计算结果
		
		label.setText("" + total);		// 显示结果
		
	}	// 泛型
	
}
